package com.basic.solrj;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.SolrParams;
import org.junit.Test;

import java.util.List;
import java.util.Map;

/*
 * SolrJ管理
 * 增删改查
 * */
public class SolrJManager {
    @Test
//    添加
    public void Add() throws Exception {
//        连接服务器
        String baseUrl = "http://localhost:8080/solr/";
        SolrServer solrServer = new HttpSolrServer(baseUrl);
//       添加 自动提交
        SolrInputDocument doc = new SolrInputDocument();
        doc.setField("id", "haha");
        doc.setField("name", "王帅");
        solrServer.add(doc, 1000);
    }

    @Test
    public void Delete() throws Exception {
//        删除全部
        String baseUrl = "http://localhost:8080/solr/";
        SolrServer solrServer = new HttpSolrServer(baseUrl);
        String query = "*:*";
        solrServer.deleteByQuery(query, 1000);
    }

    @Test
    public void Search() throws Exception {
//        查询
        String baseUrl = "http://localhost:8080/solr/";
        SolrServer solrServer = new HttpSolrServer(baseUrl);
//        关键词 排序 分页 开始行 过滤 每页条数 高亮
        SolrQuery solrQuery = new SolrQuery();
//        关键词
        solrQuery.set("q", "product_name:台灯");
//        过滤
        solrQuery.set("fq", "product_catalog_name: 幽默杂货");
        solrQuery.set("fq", "product_price: [* TO 10]");
//        排序
        solrQuery.addSort("product_price", SolrQuery.ORDER.asc);
//        分页
        solrQuery.set("start", 0);
        solrQuery.set("rows", 5);
//        默认域
        solrQuery.set("df", "product_name");
//        高亮
        //打开开关
        solrQuery.setHighlight(true);
//        指定高亮的字段
        solrQuery.addHighlightField("product_name");
//        前缀
        solrQuery.setHighlightSimplePre("<span style='red'>");
//        后缀
        solrQuery.setHighlightSimplePost("</span>");
//        指定查询域
        solrQuery.set("fl", "id,product_name");


        /*
        * 未设置高亮等查询条件
         * */
//        执行查询
        QueryResponse queryResponse = solrServer.query(solrQuery);
//        文档结果集
        SolrDocumentList docs = queryResponse.getResults();


        /*
         * Map  K id V Map
         * Map K 域名 V List
         * List list.get(0)
         * */
        Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
//     总条数
        docs.getNumFound();
//
        for (SolrDocument doc : docs) {

            /*"product_catalog_name": "幽默杂货",
             "product_price": 18.9,
             "product_name": "花儿朵朵彩色金属门后挂 8钩免钉门背挂钩2066",
             "id": "1",
             "product_picture": "2014032613103438.png",*/

            System.out.println(doc.get("id"));
            System.out.println(doc.get("product_catalog_name"));
            System.out.println(doc.get("product_price"));
            System.out.println(doc.get("product_name"));
            System.out.println(doc.get("product_picture"));
            System.out.println("-------------------------------------");


            Map<String, List<String>> map = highlighting.get(doc.get("id"));
            List<String> list=map.get("product_name");
            System.out.println(list.get(0));
            System.out.println("*************************************");
        }
    }

    @Test
    public void Update() throws Exception {
//更新
        String baseUrl = "http://localhost:8080/solr/";
        SolrServer solrServer = new HttpSolrServer(baseUrl);
//        与添加一致 只要id相同就是更新 id不同就是添加
    }
}
